Query propagation, or searching, in the current generation of Peer-to-Peer (P2P) networks is highly inefficient. When a user enters a query at a first peer node, the first peer node sends a query to a number of second peer nodes to which it is connected. Thus, if the first peer node is connected to six other peer nodes, the first peer must send six separate queries. In response, each of the second peer nodes sends the query to third peer nodes to which it is directly connected. This process continues until some threshold is reached that terminates the query or the entire P2P network is searched. This type of query propagation has several issues. First, the query may not reach all peer nodes in the P2P network. Second, each peer node must send the same query multiple times. Lastly, each peer node may receive the query from the same source multiple times along different paths in the network.
In an attempt to address these issues, some P2P networks use a super peer topology. In the super peer topology, a number of super peer nodes are elected and serve as hubs through which associated peer nodes query the P2P network. Each super peer node aggregates metadata from its peer nodes and answers queries from other super peer nodes. Although the super node topology reduces the set of nodes to which a query must be sent in order to search the entire P2P network, it relies heavily on complex technologies such as distributed hash tables to track the content that is hosted by the peer nodes. Further, each super peer node must still send each query multiple times in order to send the query to each super peer node to which it is connected.
Thus, there is a need for an improved query propagation scheme for a P2P network.